#ifndef _MAIN_H_
#define _MAIN_H_

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include <SDL.h>

typedef struct
{
	SDL_Texture* tex;
	int locked;
	SDL_Rect* rect;
	Uint8* pixels;
	int pitch;
	int nofree;
	SDL_PixelFormat *format;
}GGE_Texture;

int	GGE_GetTexturePixel(lua_State *L);
int	GGE_TextureToGrayscale(lua_State *L);

int	GGE_SurfaceToGrayscale(lua_State *L);
int	GGE_GetSurfacePixel(lua_State *L);
int	GGE_SetSurfacePixel(lua_State *L);
int	GGE_GetSurfaceRect(lua_State *L);
int	GGE_SetParent(lua_State *L);

void OPEN_Window(lua_State *L);//SDL_video.h
void OPEN_Renderer(lua_State *L);//SDL_render.h
void OPEN_Surface(lua_State *L);//SDL_render.h
void OPEN_Rect(lua_State *L);//SDL_rwops.h
void OPEN_RWops(lua_State *L);//SDL_rwops.h
void OPEN_PixelFormat(lua_State *L);//SDL_PixelFormat.h
void OPEN_Thread(lua_State *L);//SDL_Thread.h
void OPEN_Event(lua_State *L);

void OPEN_Log(lua_State *L);
void OPEN_Keyboard(lua_State *L);
void OPEN_Mouse(lua_State *L);
void OPEN_stdinc(lua_State *L);
void OPEN_Audio(lua_State *L);
//==============================================
//SDL.h 
//==============================================
int LUA_Init(lua_State *L);
int LUA_InitSubSystem(lua_State *L);
int LUA_Quit(lua_State *L);
int LUA_QuitSubSystem(lua_State *L);
int LUA_WasInit(lua_State *L);

//==============================================
//SDL_clipboard.h
//==============================================
int	LUA_GetClipboardText(lua_State *L);
int	LUA_HasClipboardText(lua_State *L);
int	LUA_SetClipboardText(lua_State *L);
//==============================================
//SDL_error.h
//==============================================
int LUA_ClearError(lua_State *L);
int LUA_GetError(lua_State *L);
int LUA_SetError(lua_State *L);
//==============================================
//SDL_filesystem.h
//==============================================
int	LUA_GetBasePath(lua_State *L);
int	LUA_GetPrefPath(lua_State *L);
//==============================================
//SDL_hints.h
//==============================================
int LUA_AddHintCallback(lua_State *L);
int LUA_ClearHints(lua_State *L);
int LUA_DelHintCallback(lua_State *L);
int LUA_GetHint(lua_State *L);
int LUA_GetHintBoolean(lua_State *L);
int LUA_SetHintWithPriority(lua_State *L);
int LUA_SetHint(lua_State *L);
//==============================================
//SDL_power.h
//==============================================
int LUA_GetPowerInfo(lua_State *L);
//==============================================
//SDL_timer.h
//==============================================
int LUA_AddTimer(lua_State *L);
int LUA_Delay(lua_State *L);
int LUA_GetPerformanceCounter(lua_State *L);
int LUA_GetPerformanceFrequency(lua_State *L);
int LUA_GetTicks(lua_State *L);
int LUA_RemoveTimer(lua_State *L);

//SDL_platform.h
int LUA_GetPlatform(lua_State *L);
//SDL_version.h
int LUA_GetVersion(lua_State* L);
//SDL_touch.h
//SDL_gesture.h
//SDL_power.h


#endif
